package com.itheima.day07_api_day02;

import java.util.Scanner;

public class Demo8 {
    /*
    【编号：1311】某程序员从控制台采集用户数据封装成Person对象，
    采集到的数据都是字符串，所以对于特殊的，数值数据需要特殊处理，
    例如年龄就是int类型的，但用户输入的时候可能会出现失误，
    请结合所学知识，避免这种用户失误而导致后续代码不能执行。
    （从前台采集数据用Scanner模拟） 运行结果：
        请输入姓名：
        张三
        请输入年龄：
        23a
        您输入的年龄格式有误，请重新输入！
        请输入年龄：
        ...
        您输入的年龄格式有误，请重新输入！
        请输入年龄：
        23
        输入完毕，信息为：
        Person{name=}
     */
    public static void main(String[] args) {
        Person p = new Person();
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入姓名：");
        String name = sc.next();
        p.setName(name);
        while (true) {
            System.out.println("请输入年龄：");
            String age = sc.next();
            try {
                //将用户输入的字符串信息转换成int类型
                int newAge = Integer.parseInt(age);
                p.setAge(newAge);
                break;
            } catch (NumberFormatException e) {
                System.out.println("您输入的年龄格式有误，请重新输入！");
                //自定义了一个年龄超出范围的异常类
            }catch (AgeOutOfBoundException a){
                System.out.println("您输入的年龄不合法,请重新输入!");
            }
        }
        System.out.println("输入完毕，信息为：");
        System.out.println(p);

    }
}
